package com.mysterymall.Service;

import com.mysterymall.Common.Utils.Result;
import com.mysterymall.Model.Dto.PlaceAnOrderCallbackDto;
import com.mysterymall.Model.Dto.WithdrawDepositQueryDto;
import com.mysterymall.Model.Entity.BankCard;
import com.mysterymall.Model.Entity.OrderInfo;
import com.mysterymall.Model.Entity.WithdrawDeposit;

import java.math.BigDecimal;
import java.util.Map;

/**
 * @ClassName com.mysterymall.Service
 * @Description
 * @Author HuangWX
 * @Time 2023/12/02  17:06
 */
public interface PaymentService {

    /**
     * 下单
     * @param orderInfo 订单信息
     * @return Result
     */
    Result placeAnOrder(OrderInfo orderInfo) throws Exception;


    /**
     * 提现
     * @param withdrawDeposit 提现信息
     * @return Result
     */
    Map<String,Object> withdrawDeposit(WithdrawDeposit withdrawDeposit);


    /**
     * 下单回调
     * @param placeAnOrderCallbackDto 回调参数
     * @return String
     */
    String placeAnOrderCallback(PlaceAnOrderCallbackDto placeAnOrderCallbackDto) throws Exception;

    Result getPaymentResult(String orderId);

    Result luckyCoinPayment(OrderInfo orderInfo);


    /**
     * 提现回调
     * @param withdrawDeposit 回调信息
     * @return Result
     */
    Result withdrawDepositCallback(WithdrawDeposit withdrawDeposit);


    /**
     * 查询提现记录
     * @param withdrawDeposit 提现信息
     * @return BankCard
     */
    WithdrawDepositQueryDto withdrawDepositQuery(WithdrawDeposit withdrawDeposit);

}
